package com.hello.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.hello.common.core.annotation.Excel;
import com.hello.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 会员信息对象 rental_member_info
 * 
 * @author hello
 * @date 2025-07-20
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RentalMemberInfo extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 会员ID */
    private Long memberId;

    /** 系统用户ID */
    @Excel(name = "系统用户ID")
    private Long userId;

    /** 真实姓名 */
    @Excel(name = "真实姓名")
    private String realName;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idCard;

    /** 会员类型：1-普通会员，2-设备提供商，3-VIP会员 */
    @Excel(name = "会员类型：1-普通会员，2-设备提供商，3-VIP会员")
    private Integer memberType;

    /** 会员等级：1-青铜，2-白银，3-黄金，4-钻石 */
    @Excel(name = "会员等级：1-青铜，2-白银，3-黄金，4-钻石")
    private Integer memberLevel;

    /** 信用分 */
    @Excel(name = "信用分")
    private Long creditScore;

    /** 押金余额 */
    @Excel(name = "押金余额")
    private BigDecimal depositBalance;

    /** 钱包余额 */
    @Excel(name = "钱包余额")
    private BigDecimal walletBalance;

    /** 总订单数 */
    @Excel(name = "总订单数")
    private Long totalOrders;

    /** 总消费金额 */
    @Excel(name = "总消费金额")
    private BigDecimal totalAmount;

    /** 是否实名认证：0-未认证，1-已认证 */
    @Excel(name = "是否实名认证：0-未认证，1-已认证")
    private Integer isVerified;

    /** 认证时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "认证时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date verifiedTime;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date createdTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date updatedTime;

    public void setMemberId(Long memberId) 
    {
        this.memberId = memberId;
    }

    public Long getMemberId() 
    {
        return memberId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setRealName(String realName) 
    {
        this.realName = realName;
    }

    public String getRealName() 
    {
        return realName;
    }
    public void setIdCard(String idCard) 
    {
        this.idCard = idCard;
    }

    public String getIdCard() 
    {
        return idCard;
    }
    public void setMemberType(Integer memberType) 
    {
        this.memberType = memberType;
    }

    public Integer getMemberType() 
    {
        return memberType;
    }
    public void setMemberLevel(Integer memberLevel) 
    {
        this.memberLevel = memberLevel;
    }

    public Integer getMemberLevel() 
    {
        return memberLevel;
    }
    public void setCreditScore(Long creditScore) 
    {
        this.creditScore = creditScore;
    }

    public Long getCreditScore() 
    {
        return creditScore;
    }
    public void setDepositBalance(BigDecimal depositBalance) 
    {
        this.depositBalance = depositBalance;
    }

    public BigDecimal getDepositBalance() 
    {
        return depositBalance;
    }
    public void setWalletBalance(BigDecimal walletBalance) 
    {
        this.walletBalance = walletBalance;
    }

    public BigDecimal getWalletBalance() 
    {
        return walletBalance;
    }
    public void setTotalOrders(Long totalOrders) 
    {
        this.totalOrders = totalOrders;
    }

    public Long getTotalOrders() 
    {
        return totalOrders;
    }
    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }
    public void setIsVerified(Integer isVerified) 
    {
        this.isVerified = isVerified;
    }

    public Integer getIsVerified() 
    {
        return isVerified;
    }
    public void setVerifiedTime(Date verifiedTime) 
    {
        this.verifiedTime = verifiedTime;
    }

    public Date getVerifiedTime() 
    {
        return verifiedTime;
    }
    public void setCreatedTime(Date createdTime) 
    {
        this.createdTime = createdTime;
    }

    public Date getCreatedTime() 
    {
        return createdTime;
    }
    public void setUpdatedTime(Date updatedTime) 
    {
        this.updatedTime = updatedTime;
    }

    public Date getUpdatedTime() 
    {
        return updatedTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("memberId", getMemberId())
            .append("userId", getUserId())
            .append("realName", getRealName())
            .append("idCard", getIdCard())
            .append("memberType", getMemberType())
            .append("memberLevel", getMemberLevel())
            .append("creditScore", getCreditScore())
            .append("depositBalance", getDepositBalance())
            .append("walletBalance", getWalletBalance())
            .append("totalOrders", getTotalOrders())
            .append("totalAmount", getTotalAmount())
            .append("isVerified", getIsVerified())
            .append("verifiedTime", getVerifiedTime())
            .append("createdTime", getCreatedTime())
            .append("updatedTime", getUpdatedTime())
            .toString();
    }
}
